MySQL怎么实现查询分位值

您所在的位置:网站首页 mysql 实现 dblink MySQL怎么实现查询分位值

MySQL怎么实现查询分位值

2023-05-15 07:51| 来源: 网络整理| 查看: 265

MySQL怎么实现查询分位值 发布时间:2023-05-05 10:05:45 来源:亿速云 阅读:70 作者:iii 栏目:开发技术

这篇文章主要介绍“MySQL怎么实现查询分位值”,在日常操作中,相信很多人在MySQL怎么实现查询分位值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么实现查询分位值”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

背景

分位值的概念

分位值:分位值(Quartile)是一种用于描述数据分布的统计概念,在统计学和数据分析中经常被用到。一般情况下,分位值分成四个等份,分别为第一分位数(Q1)、第二分位数(Q2)(也就是中位数)、第三分位数(Q3)以及极差(IQR)。其中,1/4的数据小于第一分位数,1/4的数据大于第三分位数,中间50%的数据处于第一分位数和第三分位数之间。 在统计学中,第一分位数是指将一组数据按照大小顺序排列后,处于整个数列中最靠前的25%位置的数;第二分位数是指一组数据按大小顺序排列后,处于中间位置的那个数;而第三分位数是指将一组数据按照大小顺序排列后,处于整个数列中最靠后的25%位置的数。中位数是第二分位数。 在数据分析中,分位值可以帮助我们了解数据分布情况以及通过分位值来判断数据是否偏向一侧或者分散程度等问题。当数据分配不均匀的时候,分位值可以更准确的表现数据的差异。

业务背景

商家活动发券面额有一个分布区间[1, 20],每发一张券就都会标记对应券的面额。如何比较准确的控制券的成本,就需要实时对这些券的发放情况做一个比较准确的了解。对券的发放量、发券金额均值、以及发放金额分位值(了解不同区间发放金额均值)进行实时的监控,就可以比较清楚的了解券的发放情况。

目前,业务梳理出如下指标需要数据的同学提供,所有指标均以分钟为统计粒度:

发放量:发券总量

发券金额均值:发放总额/发放总量

发券金额0.1分位均值:每分钟发券金额按照面额大小排序,面额大的在前,面额小的在后,计算每分钟发券金额靠前占比10%的那部分券的均值[如,发券面额排序为:10,9,8,8,6,5,4,4,2,2,那么0.1分位均值就是10]

发券金额0.2分位均值:每分钟发券金额按照面额大小排序,面额大的在前,面额小的在后,计算每分钟发券金额靠前占比20%的那部分券的均值[如,发券面额排序为:10,9,8,8,6,5,4,4,2,2,那么0.2分位均值就是(10+9)/2=9.5]

发放量和发券金额均值这类指标都可以用MySQL实现,那么如何实现使用MySQL查询分位值呢?

思考

MySQL实现排序

row_number() over ( partition by a1.min order by metric_value desc) as orderNum

metric_value表示发券金额,通过以上函数即可实现按照发券金额排序,而且是每分钟的发券数据按照金额排序

MySQL实现topN

SELECT * FROM sales ORDER BY amount DESC LIMIT 10;

很明显,这种topN方式并不能实现按分钟排序,取前N%。那我们换个思路,因为我们要先知道总量,才能知道N%有多大,所以我们需要先计算出每分钟总量。然后再乘以N%,就知道我们需要提取N%有多少数据了。

select hour,min, count(1) as cn  from table   where dt=20230423 and hour=11 and min>=0 and min=0 and min=0 and min=0 and min=0 and minorderNum  group by dt,hour,min  order by dt,hour,min

cn > orderNum 表示这条数据在计算分位值统计范围内。如果要计算0.1分位值,那么需要统计每分钟的前10%的发券数据。按照面额排序,分钟分组后,每条记录都会标记这条记录排在第几。每分钟发券总量再乘以10%得到cnt,这个值就是计算这一分钟0.1分钟均值的所需要数据量,当cnt MySQL实现直接查询分位值

性能从>1min --> 15s以内;性能得到极大提升

到此,关于“MySQL怎么实现查询分位值”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读: MySQL视图是怎样的 读取授权数据包时与MySQL服务器的连接中断该怎么办

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql 上一篇新闻:MySQL中MVCC机制是什么 下一篇新闻:数据库MySQL性能优化与复杂查询相关的操作方法有哪些 猜你喜欢 C++基础入门篇之强制转换讲解 使用类型增强功能的方法有哪些 使用Opencv怎么判断颜色相似的图片 如何在Asp.Net Core中使用Refit 怎么在Navicat中使用Premium连接mongodb 怎么在java中自定义注解 如何安装与使用Postman pandas中pd.read_csv()函数的parse_dates()参数如何解决 MyBatis3 DynamicSql风格语法使用方法 c# WPF中自定义加载时怎么实现带动画效果的Form和FormItem


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3